#include <REGX52.H>
#include "OneWire.h"
//DS18B20指令
#define DS18B20_SKIP_ROM			0xCC
#define DS18B20_CONVERT_T			0x44
#define DS18B20_READ_SCRATCHPAD 	0xBE

/**
  * @brief  DS18B20开始温度变换
  * @param  无
  * @retval 无
  */
void DS18B20_ConvertT(void)
{
	OneWire_Init();
	OneWire_SendByte(DS18B20_SKIP_ROM);
	OneWire_SendByte(DS18B20_CONVERT_T);
}

/**
  * @brief  DS18B20读取温度
  * @param  无
  * @retval 温度数值
  */
float DS18B20_ReadT(void)
{
	unsigned char TLSB,TMSB;
	int Temp;
	float T;
	OneWire_Init();
	OneWire_SendByte(DS18B20_SKIP_ROM);
	OneWire_SendByte(DS18B20_READ_SCRATCHPAD);
	TLSB=OneWire_ReceiveByte();
	TMSB=OneWire_ReceiveByte();
	Temp=(TMSB<<8)|TLSB;
	T=Temp/16.0;
	return T;
//	unsigned char byte, bi;
//	unsigned int i, j;	
//	for(j=8; j>0; j--)
//	{
//		OneWire_DQ = 0;//先将总线拉低1us
//		i++;
//		OneWire_DQ = 1;//然后释放总线
//		i++;
//		i++;//延时6us等待数据稳定
//		bi = OneWire_DQ;	 //读取数据，从最低位开始读取
//		/*将byte左移一位，然后与上右移7位后的bi，注意移动之后移掉那位补0。*/
//		byte = (byte >> 1) | (bi << 7);						  
//		i = 4;		//读取完之后等待48us再接着读取下一个数
//		while(i--);
//	}				
//	return byte;
}
